package com.ruoyi.student_club.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.student_club.domain.Club;
import com.ruoyi.student_club.dto.ClubAppDto;
import com.ruoyi.student_club.vo.ClubVo;
import com.ruoyi.student_club.vo.RecommendVo;
import com.ruoyi.student_club.vo.app.ClubDetailVo;
import com.ruoyi.student_club.vo.app.ClubListVo;
import com.ruoyi.student_club.vo.app.ClubRecommendVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * 社团列表展示Mapper接口
 *
 * @author 无尤
 * @date 2022-01-14
 */
public interface ClubMapper extends BaseMapper<Club> {

    /**
     * 获取社团列表
     * @param page 分页信息
     * @param clubId 社团id
     * @param typeName 类型名称
     * @param clubName 社团名称
     * @return
     */
    Page<ClubVo> queryPage(Page<ClubVo> page,
                           @Param("clubId") Long clubId,
                           @Param("typeName") String typeName,
                           @Param("clubName") String clubName);

    /**
     * 获取社团详情
     * @param clubId
     * @return
     */
    ClubVo detail(Long clubId);


    /**
     * 获取社团信息
     * @param clubId id
     * @return 社团信息
     */
    Club getClubById(Long clubId);

    /**
     * 获取首页社团列表
     * @return
     */
    List<ClubRecommendVo> getClubRecommendList();

    /**
     * 获取社团详情（app）
     * @param clubId 社团id
     * @return
     */
    ClubDetailVo getClubDetail(Long clubId);

    /**
     * 获取社团列表
     * @param dto
     * @return
     */
    List<ClubListVo> getClubList(ClubAppDto dto);

    /**
     * 获取社团列表（推荐时展示）
     * @return
     */
    List<RecommendVo> clubList();

    /**
     * 获取社团头像
     * @param clubId 社团id
     * @return
     */
    String getAvatar(Long clubId);

    /**
     * 浏览数 +1
     * @param reader 阅读数
     * @param clubId 社团id
     * @return
     */
    int updateRead(@Param("reader") Integer reader,
                   @Param("clubId") Long clubId);

    /**
     * 获取阅读数
     * @param clubId 社团id
     * @return
     */
    Integer getReaderNum(Long clubId);

}
